﻿#region Copyrights

/*
    - - - - - - - - - - - - - - - - - - - - - - -
    Nome do Arquivo : DMOAudit.cs
    - - - - - - - - - - - - - - - - - - - - - - -

    Sistema				    :  	LLS.Core
    Modulo				    :  	LLS.DataModel.Core
    Autor				    :	Leonardo L. de Siqueira
    Data					:	27//02/2012
    Descrição  				:	Classe modelo DMOAudit para manipulação de dados de auditoria do sistema.
    
*/

#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace LLS.DataModel.Core
{
    /// <summary>
    /// Classe modelo DMOAudit para manipulação de dados de auditoria do sistema
    /// </summary>
    [TableAttribute(Name = "Audits", NotAudit = true)]
    public class DMOAudit : DMOBase
    {
        #region Enumerators

        /// <summary>
        /// Enum com os tipos válidos de ação para auditoria
        /// </summary>
        public enum ActionType : uint
        {
            /// <summary>
            /// Tipo de ação usada na auditoria de inclusões de novos registros
            /// </summary>
            Save,
            /// <summary>
            /// Tipo de ação usada na auditoria de alterações de registros
            /// </summary>
            Update,
            /// <summary>
            /// Tipo de ação usada na auditoria de exclusões de registros
            /// </summary>
            Delete
        }

        #endregion

        #region Properties

        /// <summary>
        /// Resgata / define o identificador único da auditoria
        /// </summary>
        [ColumnAttribute(Name = "AuditId", Type = DbType.Int64, Size = 8, PrimaryKey = true)]
        public Int64? Id { get; set; }

        /// <summary>
        /// Resgata / define o tipo de ação auditada
        /// </summary>
        [ColumnAttribute(Name = "Action", Type = DbType.Int32, Size = 4, NotNull = true)]
        public ActionType? Action { get; set; }

        /// <summary>
        /// Resgata / define o nome da tabela auditada
        /// </summary>
        [ColumnAttribute(Name = "TableName", Type = DbType.String, Size = 50, NotNull = true)]
        public string TableName { get; set; }

        /// <summary>
        /// Resgata / define o valor da chave primária auditada 
        /// </summary>
        [ColumnAttribute(Name = "PrimaryKey", Type = DbType.String, Size = 100, NotNull = true)]
        public string PrimaryKey { get; set; }

        /// <summary>
        /// Resgata / define a data e hora da ação
        /// </summary>
        [ColumnAttribute(Name = "ActionDate", Type = DbType.DateTime, Size = 8, NotNull = true)]
        public DateTime? ActionDate { get; set; }

        /// <summary>
        /// Resgata / define o login do usuário da ação
        /// </summary>
        [ColumnAttribute(Name = "ActionUser", Type = DbType.String, Size = 100, NotNull = true)]
        public string ActionUser { get; set; }

        #endregion
    }
}
